/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


// WARNING! THIS FILE IS AUTO-GENERATED, DO NOT MAKE CHANGES, THEY WILL BE LOST ON NEXT GENERATION!

import { int32, int64, float32 } from "@koalaui/common"
import { KInt, KPointer, KBoolean, KStringPtr, wrapCallback, NativeBuffer } from "@koalaui/interop"
import { NodeAttach, remember } from "@koalaui/runtime"
import { PixelMap } from "./ArkPixelMapMaterialized"
import { ResourceStr, ResourceColor, EdgeWidths } from "./ArkUnitsInterfaces"
import { ImageAIOptions, ImageAnalyzerConfig } from "./ArkImageCommonInterfaces"
import { CommonMethod, PointLightStyle } from "./ArkCommonInterfaces"
import { Resource } from "./ArkResourceInterfaces"
import { ImageFit, ImageRepeat, CopyOptions } from "./ArkEnumsInterfaces"
import { ColorFilter } from "./ArkColorFilterMaterialized"
import { Callback_Type_ImageAttribute_onComplete_callback_event_Void, Type_ImageAttribute_onComplete_callback_event, Callback_Void } from "./SyntheticDeclarations"
export interface DrawableDescriptor {
    _DrawableDescriptorStub: string;
}
export interface DrawingColorFilter {
    _DrawingColorFilterStub: string;
}
export interface ResolutionQuality {
    _ResolutionQualityStub: string;
}
export interface DrawingLattice {
    _DrawingLatticeStub: string;
}
export enum ImageRenderMode {
    ORIGINAL = 0,
    Original = 0,
    TEMPLATE = 1,
    Template = 1
}
export enum ImageContent {
    EMPTY = 0
}
export enum DynamicRangeMode {
    HIGH = 0,
    CONSTRAINT = 1,
    STANDARD = 2
}
export enum ImageInterpolation {
    NONE = 0,
    None = 0,
    LOW = 1,
    Low = 1,
    MEDIUM = 2,
    Medium = 2,
    HIGH = 3,
    High = 3
}
export interface ImageInterface {
    invoke(src: PixelMap | ResourceStr | DrawableDescriptor): ImageAttribute;


}
export interface ImageSourceSize {
    width: number;
    height: number;
}
export interface ImageAttribute extends CommonMethod<ImageAttribute> {
    alt: string | Resource | PixelMap;
    matchTextDirection: boolean;
    fitOriginalSize: boolean;
    fillColor: ResourceColor;
    objectFit: ImageFit;
    objectRepeat: ImageRepeat;
    autoResize: boolean;
    renderMode: ImageRenderMode;
    dynamicRangeMode: DynamicRangeMode;
    interpolation: ImageInterpolation;
    sourceSize: ImageSourceSize;
    syncLoad: boolean;
    colorFilter: ColorFilter | DrawingColorFilter;
    copyOption: CopyOptions;
    draggable: boolean;
    pointLight: PointLightStyle;
    edgeAntialiasing: number;
    onComplete: ((event?: Type_ImageAttribute_onComplete_callback_event) => void);
    onError: ImageErrorCallback;
    onFinish: (() => void);
    enableAnalyzer: boolean;
    analyzerConfig: ImageAnalyzerConfig;
    resizable: ResizableOptions;
    privacySensitive: boolean;
    enhancedImageQuality: ResolutionQuality;
}
export type ImageErrorCallback = (error: ImageError) => void;
export interface ImageError {
    componentWidth: number;
    componentHeight: number;
    message: string;
}
export interface ResizableOptions {
    slice?: EdgeWidths;
    lattice?: DrawingLattice;
}
